package org.domain.sigerec.session;

import java.util.ArrayList;

import javax.faces.application.FacesMessage;

import org.domain.sigerec.entity.Cartao;
import org.domain.sigerec.entity.Cliente;
import org.domain.sigerec.entity.Telefone;
import org.domain.sigerec.enums.TipoTelefoneEnum;
import org.domain.sigerec.enums.TipoCartaoEnum;
import org.jboss.seam.annotations.Begin;
import org.jboss.seam.annotations.Factory;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.web.RequestParameter;
import org.jboss.seam.faces.FacesMessages;
import org.jboss.seam.framework.EntityHome;

@Name("clienteHome")
public class ClienteHome extends EntityHome<Cliente> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 2261917268288619834L;
	@RequestParameter
	Long clienteId;

	@Override
	public Object getId() {
		if (clienteId == null) {
			return super.getId();
		} else {
			return clienteId;
		}
	}

	@Override
	@Begin
	public void create() {
		super.create();
	}

	@Override
	public String persist() {
		// TODO Auto-generated method stub
		return super.persist();
	}

	private Telefone telefone = new Telefone();

	public Telefone getTelefone() {
		return telefone;
	}

	public void setTelefone(Telefone telefone) {
		this.telefone = telefone;
	}

	@Factory("tipos")
	public TipoTelefoneEnum[] getTipos() {
		return TipoTelefoneEnum.values();
	}
	
	@In
	private FacesMessages facesMessages;

	public void saveTelefone() {		
		if(telefone.getNumero()==null || telefone.getNumero()==0){
			facesMessages.add(FacesMessage.SEVERITY_ERROR, "Numero eh obrigatorio");
			return;
		}
        if(instance.getTelefones() == null) {
        	instance.setTelefones(new ArrayList<Telefone>());
        }
        if(!instance.getTelefones().contains(telefone)){
        	instance.getTelefones().add(telefone);
        }
        telefone = new Telefone();
	}
	
	public void atualizaTelefone(Telefone telefone){
		this.telefone = telefone;
	}
	public void removerTelefone(Telefone telefone){
		instance.getTelefones().remove(telefone);
	}
	
	
	private Cartao cartao = new Cartao();

	public Cartao getCartao() {
		return cartao;
	}

	public void setCartao(Cartao cartao) {
		this.cartao = cartao;
	}
	
	@Factory("tiposCartao")
	public TipoCartaoEnum[] getTiposCartao() {
		return TipoCartaoEnum.values();
	}

	
	public void saveCartao() {		
		if(cartao.getNumero()==null || cartao.getNumero()==0){
			facesMessages.add(FacesMessage.SEVERITY_ERROR, "Digite o numero do cartao!");
			return;
		}
        if(instance.getCartao() == null) {
        	instance.setCartao(new ArrayList<Cartao>());
        }
        if(!instance.getCartao().contains(cartao)){
        	instance.getCartao().add(cartao);
        }
        cartao = new Cartao();
	}
	
	public void atualizaCartao(Cartao cartao){
		this.cartao = cartao;
	}
	public void removerCartao(Cartao cartao){
		instance.getCartao().remove(cartao);
	}
	
	
}
